//package com.token.handler;
//
//import cn.hutool.crypto.SecureUtil;
//import cn.hutool.crypto.symmetric.AES;
//import org.apache.commons.lang3.StringUtils;
//import org.apache.ibatis.type.BaseTypeHandler;
//import org.apache.ibatis.type.JdbcType;
//import org.apache.ibatis.type.MappedJdbcTypes;
//
//import java.nio.charset.StandardCharsets;
//import java.sql.CallableStatement;
//import java.sql.PreparedStatement;
//import java.sql.ResultSet;
//import java.sql.SQLException;
//
///**
// * 字段加解密handler，JdbcType.VARCHAR：表示该处理器处理的数据类型
// *
// * @auther: henriy
// * @Date: 2023/11/29
// */
//@MappedJdbcTypes(JdbcType.VARCHAR)
//public class EncryptHandler extends BaseTypeHandler<String> {
//
//    /**
//     * 加密秘钥
//     */
//    private static final byte[] KEYS = "shc987654321camp".getBytes(StandardCharsets.UTF_8);
//
//    /**
//     * 设置参数
//     */
//    @Override
//    public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
//        if (StringUtils.isEmpty(parameter)) {
//            ps.setString(i, null);
//            return;
//        }
//
//        AES aes = SecureUtil.aes(KEYS);
//        String encrypt = aes.encryptHex(parameter);
//        ps.setString(i, encrypt);
//    }
//
//    /**
//     * 获取值
//     *
//     * @param resultSet
//     * @param columnName
//     * @return
//     * @throws SQLException
//     */
//    @Override
//    public String getNullableResult(ResultSet resultSet, String columnName) throws SQLException {
//        return decrypt(resultSet.getString(columnName));
//    }
//
//    /**
//     * 获取值
//     *
//     * @param resultSet
//     * @param columnIndex
//     * @return
//     * @throws SQLException
//     */
//    @Override
//    public String getNullableResult(ResultSet resultSet, int columnIndex) throws SQLException {
//        return decrypt(resultSet.getString(columnIndex));
//    }
//
//    /**
//     * 获取值
//     *
//     * @param callableStatement
//     * @param columnIndex
//     * @return
//     * @throws SQLException
//     */
//    @Override
//    public String getNullableResult(CallableStatement callableStatement, int columnIndex) throws SQLException {
//        return decrypt(callableStatement.getString(columnIndex));
//    }
//
//    /**
//     * 解密
//     *
//     * @param value
//     * @return
//     */
//    public String decrypt(String value) {
//        if (null == value) {
//            return null;
//        }
//
//        return SecureUtil.aes(KEYS).decryptStr(value);
//    }
//
//    public static void main(String[] args) {
//        EncryptHandler encryptHandler = new EncryptHandler();
//        String decrypt = encryptHandler.decrypt("270cc020763fbcf3f0d3a6e170feed89f86ca4176a5306fa20f0795269f420e5");
//        System.out.println(decrypt);
//    }
//
//}
